﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using CondominioG1.Negocio;
using CondominioG1.Dominio;

namespace CondominioG1.Controllers
{
    public class UsuarioController : Controller
    {
        //Dependencias (en formato de propiedad)
        public UsuarioService UsuarioService { get; set; }

        // GET: /Usuario/
        public ActionResult Index()
        {
            // Llamamos al negocio para resolver la funcionalidad y obtenemos el "modelo"
            ICollection<Usuario> modelo = UsuarioService.ListarTodosLosUsuarios();
            // Elegimos la vista a generar y le entregamos el modelo
            return View(modelo); // La vista se llama Index.aspx
        }

        // GET: /Usuario/Details/
        public ActionResult Details(String Codigo)
        {
            Usuario modelo = UsuarioService.ObtenerUsuario(Codigo);
            return View(modelo); // La vista se llama Details.aspx
        }

        // GET: /Usuario/Create
        public ActionResult Create()
        {
            return View(); // La vista se llama Create.aspx
        }

        // POST: /Usuario/Create
        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    UsuarioService.RegistrarUsuario((String)collection["Codigo"],
                                            (String)collection["Nombres"],
                                            (String)collection["Apellidos"],
                                            (String)collection["Clave"],
                                            (String)collection["ctl00$MainContent$cmbTipo"]);

                    return RedirectToAction("Index");
                }
                else
                {
                    return View();
                }
            }
            catch (Exception e)
            {
                ModelState.AddModelError(String.Empty, "Error al crear al usuario: " + e.Message);
                return View();
            }
        }

        // GET: /Usuario/Edit/ 
        public ActionResult Edit(String Codigo)
        {
            Usuario modelo = UsuarioService.ObtenerUsuario(Codigo);
            return View(modelo);
        }

        // POST: /Usuario/
        [HttpPost]
        public ActionResult Edit(String Codigo, FormCollection collection)
        {
            try
            {
                //Usuario usuarioAModificar = UsuarioService.ObtenerUsuario(Codigo);

                UsuarioService.ModificarUsuario((String)collection["Codigo"], (String)collection["Nombres"], (String)collection["Apellidos"], (String)collection["Clave"], (String)collection["Tipo"]);
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        // GET: /Usuario/Delete/ 
        public ActionResult Delete(String Codigo)
        {
            Usuario modelo = UsuarioService.ObtenerUsuario(Codigo);
            return View(modelo);
        }

        // POST: /Usuario/Delete/
        [HttpPost]
        public ActionResult Delete(String Codigo, FormCollection collection)
        {
            try
            {
                UsuarioService.EliminarUsuario(Codigo);
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}